#include "ModelStructs.h"

const Box Box::ZERO = Box(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);

void Mesh::GetTriangleVertexes(unsigned long a_triangleNum, unsigned long* o_vertTab) const
{
	o_vertTab[0] = m_normals[m_triangles[a_triangleNum].m_normals[0]].m_vertexNum;
	o_vertTab[1] = m_normals[m_triangles[a_triangleNum].m_normals[1]].m_vertexNum;
	o_vertTab[2] = m_normals[m_triangles[a_triangleNum].m_normals[2]].m_vertexNum;
}


void Box::EnlargeBBox(const Box& box)
{
	if(box.m_min[0] < m_min[0]) m_min[0] = box.m_min[0];
	if(box.m_min[1] < m_min[1]) m_min[1] = box.m_min[1];
	if(box.m_min[2] < m_min[2]) m_min[2] = box.m_min[2];

	if(box.m_max[0] > m_max[0]) m_max[0] = box.m_max[0];
	if(box.m_max[1] > m_max[1]) m_max[1] = box.m_max[1];
	if(box.m_max[2] > m_max[2]) m_max[2] = box.m_max[2];
}

void Box::EnlargeBBox(float* point)
{
	if(point[0] < m_min[0]) m_min[0] = point[0];
	if(point[1] < m_min[1]) m_min[1] = point[1];
	if(point[2] < m_min[2]) m_min[2] = point[2];

	if(point[0] > m_max[0]) m_max[0] = point[0];
	if(point[1] > m_max[1]) m_max[1] = point[1];
	if(point[2] > m_max[2]) m_max[2] = point[2];
}

void Box::Set(float a_x, float a_y, float a_z, 
			  float a_sizeX, float a_sizeY, float a_sizeZ)
{
	m_min[0] = a_x; m_min[1] = a_y; m_min[2] = a_z;
	m_max[0] = m_min[0] + a_sizeX;
	m_max[1] = m_min[1] + a_sizeY;
	m_max[2] = m_min[2] + a_sizeZ;
}